package com.panda.mall.common.mallCoupon.entity;

import javax.validation.constraints.Size;
import javax.validation.constraints.NotNull;

import java.io.Serializable;

import java.math.BigDecimal;
import java.util.Date;

import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.panda.mall.common.base.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;

/**
* 优惠券信息表
* mall_coupon_info
*/
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("mall_coupon_info")
public class MallCouponInfo extends BaseEntity implements Serializable {

    /**
    * 优惠券id
    */
    @NotNull(message="[优惠券id]不能为空")
    @ApiModelProperty("优惠券id")
    private Long id;
    /**
    * 优惠券名
    */
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("优惠券名")
    @Length(max= 255,message="编码长度不能超过255")
    private String couponName;
    /**
    * 优惠券图片
    */
    @Size(max= 500,message="编码长度不能超过500")
    @ApiModelProperty("优惠券图片")
    @Length(max= 500,message="编码长度不能超过500")
    private String couponImg;
    /**
    * 优惠券类型（0-全场赠券，1-会员赠券，2-购物赠券，3-优惠赠券）
    */
    @ApiModelProperty("优惠券类型（0-全场赠券，1-会员赠券，2-购物赠券，3-优惠赠券）")
    private Integer couponType;
    /**
    * 优惠券数量
    */
    @ApiModelProperty("优惠券数量")
    private Integer couponNum;
    /**
    * 优惠金额
    */
    @ApiModelProperty("优惠金额")
    private BigDecimal couponPrice;
    /**
    * 每人限领数
    */
    @ApiModelProperty("每人限领数")
    private Integer couponLimit;
    /**
    * 使用门槛
    */
    @ApiModelProperty("使用门槛")
    private BigDecimal couponPoint;
    /**
    * 开始时间
    */
    @ApiModelProperty("开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date startTime;
    /**
    * 结束时间
    */
    @ApiModelProperty("结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date endTime;
    /**
    * 使用类型（0-全场，1-指定分类，2-指定商品）
    */
    @ApiModelProperty("使用类型（0-全场，1-指定分类，2-指定商品）")
    private Integer useType;
    /**
    * 备注
    */
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("备注")
    @Length(max= 255,message="编码长度不能超过255")
    private String remarks;
    /**
    * 发行数量
    */
    @ApiModelProperty("发行数量")
    private Integer publishCount;
    /**
    * 使用数量
    */
    @ApiModelProperty("使用数量")
    private Integer useCount;
    /**
    * 领取数量
    */
    @ApiModelProperty("领取数量")
    private Integer receiveCount;
    /**
    * 优惠码
    */
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("优惠码")
    @Length(max= 255,message="编码长度不能超过255")
    private String couponCode;
    /**
    * 用户等级
    */
    @ApiModelProperty("用户等级")
    private Long userLevel;
    /**
    * 发行状态（0-未发行，1-已发行）
    */
    @ApiModelProperty("发行状态（0-未发行，1-已发行）")
    private Integer publishStatus;
}
